package cn.jbolt.ai.klb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import cn.jbolt.ai.klb.entity.AiKnowledgeBase;
import cn.jbolt.util.Result;


public interface AiKnowledgeBaseService extends IService<AiKnowledgeBase> {

    /**
     * 根据ID获取知识库信息
     *
     * @param id 知识库ID
     * @return 知识库信息
     */
    Result getKnowledgeBaseById(Long id);

    /**
     * 获取所有知识库信息
     *
     * @param enable   是否启用
     * @param keywords 关键词
     * @param page     当前页码
     * @param pageSize 每页大小
     * @return 所有知识库列表
     */
    Result listByPage(Boolean enable, String keywords, Integer page, Integer pageSize);

    /**
     * 添加新的知识库
     *
     * @param knowledgeBase 新的知识库对象
     * @return 是否添加成功
     */
    Result add(AiKnowledgeBase knowledgeBase);

    /**
     * 更新知识库信息
     *
     * @param knowledgeBase 需要更新的知识库对象
     * @return 是否更新成功
     */
    Result update(AiKnowledgeBase knowledgeBase);

    /**
     * 删除知识库
     *
     * @param id 知识库ID
     * @return 是否删除成功
     */
    Result del(Long id);

    /**
     * 修改知识库的启用状态
     *
     * @param id     知识库ID
     * @param
     * @return 是否修改成功
     */
    Result toggleEnable(Long id);

    /**
     * 下拉选获取所有知识库信息
     *
     * @return
     */
    Result listAllEnabled();

    /**
     * 根据知识库id返回知识库
     *
     * @param knowledgeBaseId
     * @return
     */
    Result checkKnowledgeBase(Long knowledgeBaseId);

    /**
     * 根据VDB资源返回绑定的知识库
     * @param vdbResourceId
     * @return
     */
    Result getListByVDBResourceId(Long vdbResourceId);



    /**
     * 知识库检索根据查询的字符串,limit返回doclist
     * @param knowledgeBaseId
     * @param content
     * @param limit
     * @param minScore 要求最小分数
     * @return
     */
    Result   getDocListByKnowledgeBaseId(Long knowledgeBaseId,String content, Integer limit, Double minScore);
}
